package org.szy.core.auth.util;

import cn.dev33.satoken.secure.SaSecureUtil;
import cn.dev33.satoken.stp.StpUtil;
import cn.hutool.core.lang.Console;
import cn.hutool.core.util.StrUtil;
import cn.hutool.extra.pinyin.PinyinUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.szy.core.common.entity.LoginUser;

/**
 * @author 孙志阳
 * @date 2021-10-11
 * @since 2.0.0
 **/
public class SaUtil {

    private static final Logger log = LoggerFactory.getLogger(AuthExceptionUtil.class);
    public static final String SALT = "sun-jinyu";

    public static void main(String[] args) {
        String pwd = md5("admin");
        Console.log(pwd);
        log.info("生成的密码为：{}", pwd);
    }

    public static String md5(String pwd) {
        return md5(pwd, null);
    }

    /**
     * 密码加密
     *
     * @param password 明文密码
     * @param salt     加密盐
     * @return 加密后的密码
     */
    public static String md5(String password, String salt) {
        if (StrUtil.isEmpty(salt)) {
            salt = SALT;
        } else {
            salt = PinyinUtil.getPinyin(salt, "");
        }
        return SaSecureUtil.md5BySalt(password, salt);
    }

    /**
     * 校验密码是否一致
     *
     * @param password           明文密码
     * @param encryptionPassword 加密密码
     * @return 是否一致
     */
    public static boolean verifyPwd(String password, String encryptionPassword) {
        return md5(password).equals(encryptionPassword);
    }

    /**
     * 校验密码是否一致
     *
     * @param password           明文密码
     * @param salt               加密盐
     * @param encryptionPassword 加密密码
     * @return 是否一致
     */
    public static boolean verifyPwd(String password, String salt, String encryptionPassword) {
        return md5(password, salt).equals(encryptionPassword);
    }


}
